home *** CD-ROM | disk | FTP | other *** search
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
- * |_o_o|\\ Copyright (c) 1989 The Software Distillery. *
- * |. o.| || All Rights Reserved *
- * | . | || Written by John Toebes and Doug Walker *
- * | o | || The Software Distillery *
- * | . |// 235 Trillingham Lane *
- * ====== Cary, NC 27513 *
- * BBS:(919)-471-6436 *
- \* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- #include "pickpack.h"
- #include "struct.h"
- #include "bufgen.h"
-
- static struct IntuiText IText =
- {
- 1,0,JAM2, /* front and back text pens, drawmode and fill byte */
- 0,0, /* XY origin relative to container TopLeft */
- &TOPAZ80, /* font pointer or NULL for default */
- NULL, /* pointer to text */
- NULL /* next IntuiText structure */
- };
-
- static struct IntuiText NameText = {
- 3,0,JAM2, /* front and back text pens, drawmode and fill byte */
- 98,13, /* XY origin relative to container TopLeft */
- &TOPAZ80, /* font pointer or NULL for default */
- NULL, /* pointer to text */
- NULL /* next IntuiText structure */
- };
-
-
- void stbufnew(nw, it, stnode)
- struct NewWindow **nw;
- struct IntuiText **it;
- struct STNODE *stnode;
- {
- *nw = &NewWindowStructure1;
- stnode->d.bdata->Gadget1 = Gadget1;
- stnode->d.bdata->Gadget3 = Gadget2;
- stnode->d.bdata->Gadget3 = Gadget3;
- stnode->d.bdata->Gadget1SInfo = Gadget1SInfo;
-
- stnode->d.bdata->Gadget2.NextGadget = &stnode->d.bdata->Gadget1;
- stnode->d.bdata->Gadget3.NextGadget = &stnode->d.bdata->Gadget2;
- stnode->d.bdata->Gadget1.SpecialInfo = (APTR)&stnode->d.bdata->Gadget1SInfo;
- stnode->d.bdata->pos = 0;
- NewWindowStructure1.FirstGadget = &stnode->d.bdata->Gadget1;
- *it = &IText1;
- return;
- }
-
- #define HEXASC 44
-
- /* Display the struct FileHandle */
- int stbufdisp(n)
- struct STNODE *n;
- {
- return(stbufmove(n, 0));
- }
-
- /* Display the struct FileHandle */
- int stbufmove(n, adj)
- struct STNODE *n;
- int adj;
- {
- char data[100];
- char *dpos, *p;
- int cyc, c;
- int bytes;
- int i, off;
- int dlines, wlines;
- int hpot, hbody;
-
- INITTEXT(13)
-
- BUG(1, ("stbufdisp: Entry, stnode 0x%08x window 0x%08x\n", n, n->w))
-
- wlines = (n->w->Height - 13)/9;
- dlines = (n->d.bdata->size+15) >> 4;
- if (wlines >= dlines)
- {
- off = 0;
- hpot = 0;
- hbody = -1;
- bytes = n->d.bdata->size;
- dpos = n->d.bdata->buf;
- }
- else
- {
- if (n->d.bdata->Gadget1SInfo.VertPot == 0xffff)
- off = dlines-wlines+adj;
- else
- off = ((n->d.bdata->Gadget1SInfo.VertPot*(dlines-wlines)+32000) >> 16)+adj;
- if (off >= dlines-wlines)
- {
- hpot = -1;
- off = dlines-wlines;
- }
- else if (off <= 0)
- {
- off = 0;
- hpot = 0;
- }
- else
- hpot = (off<<16)/(dlines-wlines);
- hbody = (wlines<<16)/dlines;
- bytes = n->d.bdata->size-(off*16);
- if (bytes > wlines*16)
- bytes = wlines*16;
- dpos = &n->d.bdata->buf[off*16];
- }
-
- BUG(3,("bytes=%d hpot=%d hbody=%d dlines=%d wlines=%d\n",bytes,hpot,hbody,dlines,wlines))
- ModifyProp(&n->d.bdata->Gadget1, n->w, NULL,
- AUTOKNOB+FREEVERT, -1, hpot, -1, hbody);
-
- /* Now go through and display the data */
- off <<= 4;
- i = 0;
- while(bytes--)
- {
- c = *dpos++ & 0xff;
- cyc = off&15;
- if (!cyc)
- {
- /* Time to init the output buffer */
- sprintf(data,
- /* 0000: 00000000 00000000 00000000 00000000 *................* */
- "%04x: * *", off);
-
- }
- /* - - - - - - - - - - - - - - - - - - - - - - - - */
- /* Now fill in the current character slot */
- /* - - - - - - - - - - - - - - - - - - - - - - - - */
- p = data+6+(cyc<<1)+(cyc>>2);
- *p++ = "0123456789ABCDEF"[c>>4];
- *p++ = "0123456789ABCDEF"[c&15];
-
- /* - - - - - - - - - - - - - - - - - - - - - - - - */
- /* Translate all non printing characters to a '.' */
- /* This includes the range 0-1F, 7F, 80-9F, FF */
- /* - - - - - - - - - - - - - - - - - - - - - - - - */
- if (((c+1)&0x7f) <= ' ') c = '.';
-
- data[HEXASC+cyc] = c;
- off++;
-
- if (bytes == 0 || cyc == 15)
- {
- /* Display it on the screen */
- SHOWTEXT
- }
- }
-
- strcpy(data, " ");
- while(i++ < wlines)
- SHOWTEXT
-
- BUG(1, ("stbufdisp: Exit\n"))
- return(RC_OK);
- }
-